package com.zhanghp.class004;

import java.util.Arrays;

/**
 * @author zhanghp
 * @since 2024/2/7 15:36
 */
public class SelectBubbleInsert {

    public static void main(String[] args) {
        int[] arr = {1,2,3,1};
        select(arr);
        System.out.println(Arrays.toString(arr));
    }


    public static boolean preCheck(int[] arr) {
        return arr == null || arr.length < 2;
    }

    public static void swap(int[] arr, int a, int b) {
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }

    public static void select(int[] arr) {
        if (preCheck(arr)) {
            return;
        }
        for (int minIndex, i = 0; i < arr.length - 1; i++) {
            minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                // 在这个范围找出最小值的索引
                if (arr[i] > arr[j]) {
                    minIndex = j;
                }
            }
            swap(arr, i, minIndex);
        }
    }

    public static void bubble(int[] arr) {
        if (preCheck(arr)) {
            return;
        }
        for (int end = arr.length - 1; end > 0; end--) {
            for (int i = 0; i < end ; i++) {
                if (arr[i] > arr[i + 1]) {
                    swap(arr, i, i + 1);
                }
            }
        }
    }

    public static void insert(int[] arr) {
        if (preCheck(arr)) {
            return;
        }
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i ; j >=0  && arr[j + 1] < arr[j ]; j--) {
                swap(arr, j, j + 1);
            }
        }
    }
}
